package biz.ws.ws;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @创建人 xiaojiancheng
 * @时间 2020/1/7
 * @描述 用户容器
 *      U(user)表示用户  C(connection/Channel)表示和用户关联的链接(用于发送消息)
 *      <li>    用户和链接是一对多的关系   允许存在多个链接
 *      <li>    根据用户能够取到链接
 *      <li>    根据链接能够取到用户
 */
public interface Container<U,C> {
    //  给用户添加一个连接
    C put(U u, C c);

    /**
     * 用于加载初始化的用户  启动之后不要使用了
     * @param userList
     * @return
     */
    void putListUser(List<U> userList);

    U get(C c);

    U get(Serializable userId);

    U removeUser(U u);

    void removeConnection(C c);

    boolean hasConnection(C c);

    boolean hasUser(U u);

    int size();

    Map<Serializable,U> userList();
}
